The identification and tracking of dependencies between the components of distributed systems can be important for integrated fault management. Failures occurring in one service or part of a system can often affect other services, systems, devices, etc. Dependencies often exist between the components of different services on a single system and also between client and server components of a service across multiple systems and domains.
A service or system component can often have dependencies and also be dependent on another service or system component. Dependencies can exist between various components of a distributed system, such as end-user services, system services, applications and associated logical and physical components. However, service dependencies are often not explicit in today's systems, thus complicating tasks of problem determination, isolation and resolution.
Current solutions have a number of drawbacks. For example, dependencies may not be clearly identified in problem determination, isolation and resolution solutions. Also, current solutions can provide much more problem data to a system administrator than is useful, complicating the processes of problem determination, isolation and resolution. Furthermore, problem data that is provided to the system administrator may be presented in a manner which is difficult to interpret, time-consuming to sift through, and for which the system administrator often receives specialized training and experience to be able to understand and analyze.
Due to the heterogeneity of components of a distributed system with which the problem isolation process is involved, determining the impact of a system failure can be difficult given the limitations of existing techniques. Some additional shortcomings of existing techniques include: existing techniques address installation and deployment phases of a software product but do not attempt to capture runtime aspects; existing techniques do not deal with end-to-end applications or services that span multiple systems; software inventory information is often described in a proprietary format making sharing this information difficult among various heterogeneous systems; and existing techniques do not effectively discover and represent the topology of distributed applications and services. These drawbacks, and others, can result in wasted time, effort, and money.